#pragma once
#include <Dynamics/Damping/velocity_damping_cpu.h>

namespace PhysLeo
{

/**
 * velocity damping gpu module
 * f = -alpha*m*v
 */
template<typename T>
class VelocityDampingCuda : public VelocityDampingCpu<T>
{
public:
    /**
    * empty constructor
    */
    VelocityDampingCuda() = default;

    /**
    * virtual destructor
    */
    virtual ~VelocityDampingCuda() = default;

    /**
    * add velocity damping force to target force data buffer
    * @param vel  velocity data buffer
    * @param force  force data buffer
    */
    void addDampingForce(std::shared_ptr<BufferData<glm::tvec3<T>>> vel, std::shared_ptr<BufferData<glm::tvec3<T>>> force) override;
};

}